package com.bank.manage.model.dto;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.gavin.core.annotation.Values;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * RecordSDto
 *
 * @author grl
 * @date 2024/4/1
 */
@Data
public class RecordsDto {
    /**
     * 用户编号
     */
    private String userNum;
    /**
     * 请求唯一值
     */
    @NotBlank
    private String requestId;
    /**
     * 操作类型
     */
    @NotBlank
    @Values(value = {"SYS","CASH","TRANSFER","INCOME","RECHARGE","CONSUME"})
    private String eventType;
    /**
     * 唯一标识
     */
    @NotNull
    private String accessWalletId;
    /**
     * 金额
     */
    private BigDecimal amount;
    /**
     * 验证方式
     */
    private String verificationWay;
    /**
     * 验证结果
     */
    private String verificationResult;
    /**
     * 银行事件Id
     */
    private String bankEventId;
    /**
     * 秘钥验证结果
     */
    private String keyVerificationResult;
    /**
     * 签名验证结果
     */
    private String signatureVerificationResult;
    /**
     * 验证说明
     */
    private String verificationRemark;
    /**
     * 银行的响应结果
     */
    private String bankResponse;
    /**
     * 验证时间
     */
    private LocalDateTime verificationTime;
    /**
     * 操作结果
     */
    private String operationResults;
    /**
     *渠道编号
     */
    private String channelNumber;
    /**
     * 商户编号
     */
    private String merchantId;
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 商户名称
     */
    private String merchantName;
    /**
     * 订单名称
     */
    private String orderName;
    /**
     * 时间发送的时间
     */
    private LocalDateTime eventTime;
    /**
     * 备注
     */
    private String remark;
    /**
     *  对方的钱包号
     */
    private String otherSideWalletNum;
    /**
     * 消费类型
     */
    private String consumeType;
    /**
     * 操作信息
     */
    private String operationInfo;
    /**
     * 身份识别唯一值
     */
    private String specificValue;
}
